import mqtt from 'mqtt';

// const connectUrl = `ws://XXXXXXXX/mqtt/ws`;
const connectUrl = `ws://10.184.224.111:8083/mqtt`;
// 客户端ID（注意：客户端不能写死，如果多人用同一个客户端，那么就会出现MQTT一直是断开重连断开重连的问题）
const clientId = `mqtt_${Math.random().toString(16).slice(3)}`;
// 连接设置
const options = {
  clean: true,	// 保留会话
  connectTimeout: 4000,	// 超时时间
  reconnectPeriod: 1000,	// 重连时间间隔
  // 认证信息
  clientId,
  username: 'admin',
  password: 'biubiu123'
};
export default {
  install(Vue) {
    // mqttClient 传入的参数，初始参数为null
    Vue.prototype.mqttStart = function(topicArr, topicMsgCallBack) {
      const client = mqtt.connect(connectUrl, options);

      if (client.connected) {
        client.end();
      }
      // mqtt连接
      client.on('connect', (e) => {
        console.log('连接成功:');
        client.subscribe(topicArr, { qos: 0 }, (error) => {
          if (!error) {
            console.log('订阅成功');
          } else {
            console.log('订阅失败');
          }
        });
      });
      // 接收消息处理
      client.on('message', (topic, message) => {
        console.log('收到来自', topic, '的消息', message.toString());
        topicMsgCallBack.call(topic, message);
      });
      // 断开发起重连
      client.on('reconnect', (e) => {
        console.log('重新连接', e);
      });
      // 脱机尝试重新连接
      client.on('offline', (e) => {
        console.log('脱机尝试重连');
      });
      // 链接异常处理
      client.on('error', (error) => {
        console.log('连接失败:', error);
      });
    };
  }
};
